import ctypes
from ctypes import c_int, c_size_t, POINTER
import random

# 加载DLL
lib = ctypes.CDLL('./LibFastSort.dll')

# 定义函数原型
lib.heap_sort_int.argtypes = [POINTER(c_int), c_size_t]
lib.shell_sort_int.argtypes = [POINTER(c_int), c_size_t]
lib.quick_sort_int.argtypes = [POINTER(c_int), c_size_t]
lib.merge_sort_int.argtypes = [POINTER(c_int), c_size_t]

# 生成随机数组
array_length = 1000  # 可以根据需要调整数组长度
array_data = [random.randint(0, 1000000) for _ in range(array_length)]

# 选择排序函数
sort_function_name = 'quick_sort_int'  # 可以更改为其他排序函数名

# 转换为c_int数组
arr = (c_int * array_length)(*array_data)

# 调用排序函数
sort_function = getattr(lib, sort_function_name)
sort_function(arr, array_length)

# 验证排序结果
is_sorted = all(arr[i] <= arr[i + 1] for i in range(array_length - 1))
print(f"数组已按{sort_function_name}排序: {is_sorted}")

# 如果需要打印排序后的数组（用于调试或验证）
print([arr[i] for i in range(array_length)])